﻿using System;
using rsp.messages;
using rsp.worteVergleicher.contract;
using System.Linq;

namespace rsp.worteVergleicher {
    public class WorteVergleicher : IWorteVergleicher {

        internal Worte ReferenzWorte { get; private set; }
        public void ProcessReferenzWorte(Worte referenzWorte) {
            ReferenzWorte = referenzWorte;
        }

        public void ProcessWorteVergleich(Worte zuVergleichendeWorte) {
            OnReferenzWorte();
            var sindZuVergleichendeWorteInReferenzWorte = new OhneFehler(
                                                          zuVergleichendeWorte.Value
                                                          .Except(ReferenzWorte.Value)
                                                          .Count() == 0);
            OnErgebnis(sindZuVergleichendeWorteInReferenzWorte);
        }

        public event Action OnReferenzWorte;
        public event Action<OhneFehler> OnErgebnis;
    }
}

